[Clam AntiVirus](https://www.clamav.net) é uma caixa de ferramentas de antivírus, código aberto (GPL), para UNIX. Ele fornece uma série de utilitários, incluindo um daemon multi-threaded flexível e escalável, um scanner de linha de comando e uma ferramenta avançada para atualizações automáticas de banco de dados. Como o uso principal do ClamAV é em servidores de arquivos/e-mails para desktops Windows, ele principalmente detecta vírus e malwares do Windows com suas assinaturas embutidas.

## Contents

*   [1 Instalação](#Instala.C3.A7.C3.A3o)
*   [2 Atualizando o banco de dados](#Atualizando_o_banco_de_dados)
*   [3 Iniciando o daemon](#Iniciando_o_daemon)
*   [4 Testando o software](#Testando_o_software)
*   [5 Adicionando mais repositórios de bancos de dados/assinaturas](#Adicionando_mais_reposit.C3.B3rios_de_bancos_de_dados.2Fassinaturas)
    *   [5.1 Configure clamav-unofficial-sigs](#Configure_clamav-unofficial-sigs)
        *   [5.1.1 Banco de dados MalwarePatrol](#Banco_de_dados_MalwarePatrol)
*   [6 Varrendo por vírus](#Varrendo_por_v.C3.ADrus)
*   [7 Usando o milter](#Usando_o_milter)
*   [8 OnAccessScan](#OnAccessScan)
*   [9 Solução de programas](#Solu.C3.A7.C3.A3o_de_programas)
    *   [9.1 Erro: Clamd was NOT notified](#Erro:_Clamd_was_NOT_notified)
    *   [9.2 Erro: No supported database files found](#Erro:_No_supported_database_files_found)
    *   [9.3 Erro: Can't create temporary directory](#Erro:_Can.27t_create_temporary_directory)
*   [10 Veja também](#Veja_tamb.C3.A9m)

## Instalação

[Instale](/index.php/Instale "Instale") o pacote [clamav](https://www.archlinux.org/packages/?name=clamav).

## Atualizando o banco de dados

Atualize as definições de vírus com:

```
# freshclam

```

Os arquivos de banco de dados são salvos em:

```
/var/lib/clamav/daily.cvd
/var/lib/clamav/main.cvd
/var/lib/clamav/bytecode.cvd

```

[Inicie/habilite](/index.php/Inicie/habilite "Inicie/habilite") `clamav-freshclam.service` para que as definições de vírus estejam sempre recentes.

## Iniciando o daemon

**Nota:** Você precisa executar `freshclam` antes de iniciar o serviço pela primeira vez ou você poderá ter problemas/erros que impedirão o ClamAV de iniciar corretamente.

O serviço chamado `clamav-daemon.service`. [Inicie](/index.php/Inicie "Inicie")-o e [habilite](/index.php/Habilite "Habilite")-o para iniciar quando da inicialização do sistema.

## Testando o software

Para ter certeza que o ClamAV e as definições estão instaladas corretamente, execute um scan no [arquivo de teste EICAR](https://www.eicar.org/86-0-Intended-use.html) (uma assinatura inofensiva com nenhum código de vírus) com clamscan.

```
$ curl [https://www.eicar.org/download/eicar.com.txt](https://www.eicar.org/download/eicar.com.txt) | clamscan -

```

A saída **deve** incluir:

```
stdin: Eicar-Test-Signature FOUND

```

Do contrário, leia a parte Solução de Problemas ou peça por ajuda nos [Fóruns do Arch](https://bbs.archlinux.org/).

## Adicionando mais repositórios de bancos de dados/assinaturas

ClamAV pode usar banco de dados/assinaturas de outros repositórios ou fornecedores de segurança.

Para adicionar os mais importantes em um único passo, instale [clamav-unofficial-sigs](https://aur.archlinux.org/packages/clamav-unofficial-sigs/).

Isso vai adicionar assinaturas/banco de dados de, por exemplo, MalwarePatrol, SecuriteInfo, Yara, Linux Malware Detect, etc. Para a lista completa de banco de dados, [veja a descrição de seu repositório no GitHub](https://github.com/extremeshok/clamav-unofficial-sigs#description).

### Configure clamav-unofficial-sigs

[Habilite](/index.php/Habilite "Habilite") o `clamav-unofficial-sigs.timer`.

Isso vai atualizar regularmente as assinaturas não oficiais baseadas nos arquivos de configuração no diretório `/etc/clamav-unofficial-sigs`.

Para atualizar as assinaturas manualmente, execute o seguinte comando:

```
# clamav-unofficial-sigs.sh

```

Para alterar as configurações padrão, acesse e modifique `/etc/clamav-unofficial-sigs/user.conf`.

**Nota:** Você ainda deve estar com o `clamav-freshclam.service` [iniciado](/index.php/Iniciado "Iniciado") para ter atualizações de assinaturas oficiais dos espelhos do ClamAV.

#### Banco de dados MalwarePatrol

Se você quiser de usar o banco de dados do MalwarePatrol, crie uma conta em [https://www.malwarepatrol.net/](https://www.malwarepatrol.net/).

Em `/etc/clamav-unofficial-sigs/user.conf`, altere o seguinte para habilitar essa funcionalidade:

```
malwarepatrol_receipt_code="SEU-NÚMERO-RECIBO" # Insira seu número de recibo aqui
malwarepatrol_product_code="8" # Use 8 se você tiver uma conta Free ou 15 se você for um cliente Premium.
malwarepatrol_list="clamav_basic" # *clamav_basic* ou *clamav_ext*
malwarepatrol_free="yes" # Defina para *yes* se você tiver uma conta Free ou *no* see você tiver uma conta Premium.

```

Fonte: [https://www.malwarepatrol.net/clamav-configuration-guide/](https://www.malwarepatrol.net/clamav-configuration-guide/)

## Varrendo por vírus

`clamscan` pode ser usado para varrer *(scan)* certos arquivos, diretórios home, um sistema inteiro:

```
$ clamscan meuarquivo
$ clamscan --recursive --infected /home # ou -r -i
$ clamscan --recursive --infected --exclude-dir='^/sys|^/dev' /

```

Se você quiser que `clamscan` remova o arquivo infectado, adicione ao comando a opção `--remove` ou você pode usar `--move=/dir` para colocá-los em quarentena.

Você também pode se interessar em usar o `clamscan` para varrer arquivos grandes. Neste caso, anexe as opções `--max-filesize=4000M` e `--max-scansize=4000M` ao comando. "4000M" é o maior valor possível e pode ser diminuído conforme necessário.

Usar a opção `-l /caminho/para/arquivo` vai imprimir os logs do `clamscan` para um arquivo texto para localizar infecções relatadas.

## Usando o milter

Milter vai realizar um scan em seu servidor sendmail por e-mail contendo vírus. Copie `/etc/clamav/clamav-milter.conf.sample` para `/etc/clamav/clamav-milter.conf` e ajuste-o às suas necessidades. Por exemplo:

 `/etc/clamav/clamav-milter.conf` 
```
MilterSocket /run/clamav/clamav-milter.sock
MilterSocketMode 660
FixStaleSocket yes
User clamav
PidFile /run/clamav/clamav-milter.pid
TemporaryDirectory /tmp
ClamdSocket unix:/var/lib/clamav/clamd.sock
LogSyslog yes
LogInfected Basic
```

Crie `/etc/systemd/system/clamav-milter.service`:

 `/etc/systemd/system/clamav-milter.service` 
```
[Unit]
Description='ClamAV Milter'
After=clamav-daemon.service

[Service]
Type=forking
ExecStart=/usr/bin/clamav-milter --config-file /etc/clamav/clamav-milter.conf

[Install]
WantedBy=multi-user.target
```

[Habilite](/index.php/Habilite "Habilite") e [inicie](/index.php/Inicie "Inicie") `clamav-milter.service`.

## OnAccessScan

A varredura no acesso (*on-access scan*) requer que o kernel seja compilado com o módulo kernel *fanotify* (kernel >= 3.8). Verifique se *fanotify* foi ativado antes de ativar a varredura no acesso.

```
 $ zgrep FANOTIFY /proc/config.gz

```

A varredura no acesso digitalizará o arquivo ao ler, escrever ou executá-lo.

Primeiro, edite o arquivo de configuração `/etc/clamav/clamd.conf`, adicionando o seguinte ao final do arquivo (você também pode alterar as opções individuais):

 `/etc/clamav/clamd.conf` 
```
# Ativa varredura no acesso, exige que clamav-daemon.service esteja em execução
ScanOnAccess true

# Define o ponto de montagem onde deve-se realizar recursivamente a varredura,
# isso poderia ser todo caminho ou vários caminho (uma linha por caminho)
OnAccessMountPath /usr
OnAccessMountPath /home/
OnAccessExcludePath /var/log/

# Sinaliza fanotify para bloquear quaisquer eventos em arquivos monitorados para realizar a varredura
OnAccessPrevention false

# Realiza a varredura em arquivos recém-criados, movidos ou renomeados
OnAccessExtraScanning true

# Verifica o UID do evento do fanotify
OnAccessExcludeUID 0

# Especifica uma ação para realizar quando o clamav detecta um arquivo malicioso
# é possível especificar um comando em linha também
VirusEvent /etc/clamav/detected.sh

# AVISO: clamd deve ser executado como root
User root

```

Em seguida, crie o arquivo `/etc/clamav/detected.sh` e adicione o conteúdo a seguir. Isso permite que você altere/especifique a mensagem de depuração quando um vírus tiver sido detectado pelo dispositivo de varredura no acesso do clamd:

 `/etc/clamav/detected.sh` 
```
#!/bin/bash
PATH=/usr/bin

alert="Signature detected: $CLAM_VIRUSEVENT_VIRUSNAME in $CLAM_VIRUSEVENT_FILENAME"

# Envia o alerta para o systemd logger se existir, do contrário para /var/log
if [[ -z $(command -v systemd-cat) ]]; then
	echo "$(date) - $alert" >> /var/log/clamav/infected.log
else
	# como "emerg", isso poderia fazer com que seu DE mostre um alerta virtual. Acontece no plasma, mas o próximo alerta visual é muito melhor
	echo "$alert" | /usr/bin/systemd-cat -t clamav -p emerg
fi

# Envia um alerta para todos os usuários gráficos
XUSERS=($(who|awk '{print $1$NF}'|sort -u))

for XUSER in $XUSERS; do
    NAME=(${XUSER/(/ })
    DISPLAY=${NAME[1]/)/}
    DBUS_ADDRESS=unix:path=/run/user/$(id -u ${NAME[0]})/bus
    echo "run $NAME - $DISPLAY - $DBUS_ADDRESS -" >> /tmp/testlog 
    /usr/bin/sudo -u ${NAME[0]} DISPLAY=${DISPLAY} \
                       DBUS_SESSION_BUS_ADDRESS=${DBUS_ADDRESS} \
                       PATH=${PATH} \
                       /usr/bin/notify-send -i dialog-warning "clamAV" "$alert"
done

```

Se você está usando [AppArmor](/index.php/AppArmor "AppArmor"), também é necessário permitir que o clamd execute como root:

```
# aa-complain clamd

```

[Reinicie](/index.php/Reinicie "Reinicie") o `clamav-daemon.service`.

Fonte: [http://blog.clamav.net/2016/03/configuring-on-access-scanning-in-clamav.html](http://blog.clamav.net/2016/03/configuring-on-access-scanning-in-clamav.html)

## Solução de programas

### Erro: Clamd was NOT notified

Se você receber as seguintes mensagens após executar freshclam:

```
WARNING: Clamd was NOT notified: Cannot connect to clamd through 
/var/lib/clamav/clamd.sock connect(): No such file or directory

```

Adicione um arquivo sock ao ClamAV:

```
# touch /var/lib/clamav/clamd.sock
# chown clamav:clamav /var/lib/clamav/clamd.sock

```

Então, edite `/etc/clamav/clamd.conf` - descomente essa linha:

```
LocalSocket /var/lib/clamav/clamd.sock

```

Salve o arquivo e [reinicie](/index.php/Reinicie "Reinicie") `clamav-daemon.service`.

### Erro: No supported database files found

Se você receber o erro abaixo quando iniciar o daemon:

```
LibClamAV Error: cli_loaddb(): No supported database files found
in /var/lib/clamav ERROR: Not supported data format

```

Isso acontece por causa de incompatibilidade entre a configuração `DatabaseDirectory` do `/etc/clamav/freshclam.conf` e `DatabaseDirectory` do `/etc/clamav/clamd.conf`. `/etc/clamav/freshclam.conf` apontando para `/var/lib/clamav`, mas `/etc/clamav/clamd.conf` (diretório padrão) apontando para `/usr/share/clamav`, ou outro diretório. Edite `/etc/clamav/clamd.conf` e substituta com o mesmo DatabaseDirectory como no `/etc/clamav/freshclam.conf`. Após isso, clamav vai iniciar com sucesso.

### Erro: Can't create temporary directory

Se você obtiver o erro a seguir, junto com um 'HINT' contendo um número de UID e um de GID:

```
# can't create temporary directory

```

Corrija as permissões:

```
# chown *UID*:*GID* /var/lib/clamav & chmod 755 /var/lib/clamav

```

sendo *UID* e *GID* o informado na dica acima

## Veja também

*   [Wikipedia:ClamAV](https://en.wikipedia.org/wiki/ClamAV "wikipedia:ClamAV")
*   [ClamSMTP](/index.php/ClamSMTP_(Portugu%C3%AAs) "ClamSMTP (Português)")